// 给你一个字符串 s，请你返回 两个相同字符之间的最长子字符串的长度 ，计算长度时不含这两个字符。
// 如果不存在这样的子字符串，返回 - 1 。

// 思路找到某字符第一次出现和最后一次出现的位置，取二者之差的最大值即可
var maxLengthBetweenEqualCharacters = function (s) {
  let obj = {};
  let flag = true; // true表示不存在这样的字符串
  for (let i = 0; i < s.length; i++) {
    // 不止一次出现
    if (obj[s[i]]) {
      obj[s[i]].last = i;
      flag = false;
    } else { // 第一次出现
      obj[s[i]] = { first: i, last: i };
    }
  }
  if (flag)
    return -1
  else {
    let max = 0;
    Object.keys(obj).forEach(key => {
      if (obj[key].last - obj[key].first - 1 > max)
        max = obj[key].last - obj[key].first - 1;
    })
    return max;
  }
};
// cabbac
console.log(maxLengthBetweenEqualCharacters('cabbac'));
// console.log(maxLengthBetweenEqualCharacters('aa'));
// console.log(maxLengthBetweenEqualCharacters('abca'));
// console.log(maxLengthBetweenEqualCharacters('cbzxy'));